Alteryx:レコードが0件のときは出力ファイルを作成しないトリック
DI部プリセールスエンジニアの兼本です。
今回はお客様からのご質問に答えるシリーズです。
エラーのデータをファイルに出力するには?
Alteryxでフィルタツールを使用すると条件に一致する場合、しない場合でそれぞれフローを作成することができ、条件に一致しなかったデータをエラーデータとしてファイルに出力する、という処理も簡単に実現できます。
例えば、以下のようなワークフローを作成します。
テキストインプットツールには、[Data]フィールドに1から4までの数字を格納しており、
フィルタツールを使用して、[Data]の値が3以下の時は正常、4以上の時はエラーとして扱うことにします。
このワークフローを実行すると、出力先のディレクトリにはresults.csvとerror.csvの2つのファイルが作成されます。
results.csvにはフィルタツールの条件に一致するデータが、error.csvには条件に一致しないデータ(エラーとして扱う)が保存されていることがわかります。
- results.csvのデータ
-
error.csvのデータ
次に、エラーデータが作成されないケースを試します。 テキストインプットツールのデータを少し加工して、すべてのデータを3以下にしておきます。
出力された2つのファイルを削除して、再度、ワークフローを実行します。
ファイルの出力先ディレクトリを確認すると、エラーは0件なのですが、error.csvファイルはできていますね。
内容を確認するとヘッダ行だけが出力されていました。
では、この空のファイルを出力しないようにするにはどうすればよいでしょうか。
正攻法では見つからなかったのですが、Alteryx Communityにトリッキーなエントリがありましたので、今回はこの方法をご紹介します。
レコードがないときはファイルを作成しないトリックをやってみた。
やり方は以下の通りです。
フィルタツールを追加
エラーファイルを作成するデータ出力ツールの手前にフィルタツールを配置し、新しくNULLという名前のString型のフィールドを追加します。 計算式として、Null() を指定します。
データ出力ツールの設定を変更
データ出力ツールのプロパティ設定下部にある「フィールドからファイル/テーブル名を取得」オプションを有効にします。
「ファイル/テーブル名に接尾辞を追加」オプションを選択(デフォルト)し、フィールド名として先ほど作成した「NULL」フィールドを指定します。
また「フィールドを出力に保持」オプションはチェックを外します。
これでトリックの仕込みは完了です。完成したワークフローは以下のようになっています。
テキストインプットツールのデータを3以下にし、前のワークフロー実行時に作成されたファイルを削除してから、このワークフローを実行すると、エラー行がない場合はerror.csvファイルが作成されません!
もちろん、エラー行がある場合は、ちゃんとerror.csvファイルが作成されます。
まとめ
いかがでしたか。
なんでこうなるのか不思議なトリックですが、結構実用的だと思います。
このトリックを紹介しているのは、Alteryxのコミュニティリーダーのひとりなのですが、改めて、Alteryx ACEってすごいですね。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。